| Seleção (σ) |
σcondição(R) |
SELECT * FROM R WHERE condição |
Filtra tuplas que satisfazem uma condição |
condição: condição de filtragem R: relação (tabela) |
σidade > 30(Clientes) |
SELECT * FROM Clientes WHERE idade > 30; |
| Projeção (π) |
πatributos(R) |
SELECT atributos FROM R |
Retorna colunas específicas, eliminando duplicatas |
atributos: colunas a selecionar R: relação (tabela) |
πnome, idade(Clientes) |
SELECT DISTINCT nome, idade FROM Clientes; |
| Renomeação (ρ) |
ρnovo_nome(R) |
SELECT * FROM R AS novo_nome |
Renomeia a relação ou seus atributos |
novo_nome: novo nome para a relação R: relação original |
ρC(Clientes) |
SELECT * FROM Clientes AS C; |
| União (⋃) |
R ⋃ S |
SELECT * FROM R UNION SELECT * FROM S |
Combina tuplas de duas relações, eliminando duplicatas |
R: primeira relação S: segunda relação (mesma estrutura) |
ClientesBrasil ⋃ ClientesEUA |
SELECT * FROM ClientesBrasil UNION SELECT * FROM ClientesEUA; |
| Interseção (∩) |
R ∩ S |
SELECT * FROM R INTERSECT SELECT * FROM S |
Retorna tuplas que estão em ambas as relações |
R: primeira relação S: segunda relação (mesma estrutura) |
ClientesBrasil ∩ ClientesEUA |
SELECT * FROM ClientesBrasil INTERSECT SELECT * FROM ClientesEUA; |
| Diferença (−) |
R − S |
SELECT * FROM R EXCEPT SELECT * FROM S |
Retorna tuplas de R que não estão em S |
R: primeira relação S: segunda relação (mesma estrutura) |
ClientesBrasil − ClientesEUA |
SELECT * FROM ClientesBrasil EXCEPT SELECT * FROM ClientesEUA; |
| Produto Cartesiano (×) |
R × S |
SELECT * FROM R, S |
Combina todas as tuplas de R com todas as de S |
R: primeira relação S: segunda relação |
Clientes × Pedidos |
SELECT * FROM Clientes, Pedidos; |
| Junção Natural (⨝) |
R ⨝ S |
SELECT * FROM R NATURAL JOIN S |
Combina tuplas de R e S com base em atributos comuns |
R: primeira relação S: segunda relação |
Clientes ⨝ Pedidos |
SELECT * FROM Clientes NATURAL JOIN Pedidos; |
| Junção Theta (⨝θ) |
R ⨝θ S |
SELECT * FROM R JOIN S ON θ |
Combina tuplas de R e S com uma condição específica |
R: primeira relação S: segunda relação θ: condição de junção |
Clientes ⨝Clientes.cidade = Pedidos.cidade Pedidos |
SELECT * FROM Clientes JOIN Pedidos ON Clientes.cidade = Pedidos.cidade; |
| Junção Externa Esquerda (⟕) |
R ⟕ S |
SELECT * FROM R LEFT JOIN S ON condição |
Retorna todas as tuplas de R e tuplas de S que têm correspondência |
R: primeira relação S: segunda relação condição: condição de junção |
Clientes ⟕ Pedidos |
SELECT * FROM Clientes LEFT JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
| Junção Externa Direita (⟖) |
R ⟖ S |
SELECT * FROM R RIGHT JOIN S ON condição |
Retorna todas as tuplas de S e tuplas de R que têm correspondência |
R: primeira relação S: segunda relação condição: condição de junção |
Clientes ⟖ Pedidos |
SELECT * FROM Clientes RIGHT JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
| Junção Externa Completa (⟗) |
R ⟗ S |
SELECT * FROM R FULL JOIN S ON condição |
Retorna todas as tuplas de R e S, correspondentes ou não |
R: primeira relação S: segunda relação condição: condição de junção |
Clientes ⟗ Pedidos |
SELECT * FROM Clientes FULL JOIN Pedidos ON Clientes.id = Pedidos.cliente_id; |
| Divisão (÷) |
R ÷ S |
(Não tem equivalente direto) |
Retorna tuplas de R associadas a todas as de S |
R: relação com tuplas para dividir S: relação com valores associados |
ClientesProdutos ÷ ProdutosVendidos |
SELECT cliente_id FROM Clientes WHERE NOT EXISTS (SELECT 1 FROM Produtos WHERE Produtos.produto_id NOT IN (SELECT produto_id FROM Compras WHERE ...)) |
| Ordenação (τ) |
τatributos(R) |
SELECT * FROM R ORDER BY atributos |
Ordena as tuplas da relação com base nos atributos especificados |
atributos: colunas a ordenar R: relação (tabela) |
τidade DESC(Clientes) |
SELECT * FROM Clientes ORDER BY idade DESC; |
| Agrupamento (γ) |
γatributos; função_agregada(R) |
SELECT atributos, função_agregada FROM R GROUP BY atributos |
Agrupa tuplas e aplica funções agregadas |
atributos: colunas para agrupar função_agregada: função aplicada aos grupos R: relação (tabela) |
γcidade; COUNT(*); AVG(idade)(Clientes) |
SELECT cidade, COUNT(*), AVG(idade) FROM Clientes GROUP BY cidade; |